package main

import (
	"go-fox-edge-channel-udp-client/Initialize"
	"log"
	"net"
	"time"
)

func main() {
	Initialize.Initialize()
}

func main1() {
	// 创建UDP监听地址（本地地址）
	localAddr, err := net.ResolveUDPAddr("udp", "0.0.0.0:0") // 使用0.0.0.0监听所有可用的网络接口
	if err != nil {
		panic(err)
	}

	// 创建UDP连接
	conn, err := net.ListenUDP("udp", localAddr)
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	go handleRequest(conn)

	// 准备要发送的数据
	message := []byte("Hello, World!")

	// 指定新的目标IP和端口，并发送数据
	for _, destIP := range []string{"192.168.1.6", "192.168.1.7"} { // 示例IP地址列表
		remoteAddr, err := net.ResolveUDPAddr("udp", destIP+":12345") // 假设目标端口是12345
		if err != nil {
			panic(err)
		}

		// 发送数据到新的目标IP地址
		_, err = conn.WriteToUDP(message, remoteAddr)
		if err != nil {
			panic(err)
		}
	}

	time.Sleep(1000 * time.Second)
}

func handleRequest(conn *net.UDPConn) {
	buffer := make([]byte, 1024) // 接收缓冲区
	for {
		n, addr, err := conn.ReadFromUDP(buffer)
		if err != nil {
			log.Println("Read from UDP failed:", err)
			break
		}
		log.Println("Read from UDP ok:", addr)

		// 处理接收到的数据，例如回复消息等
		_, err = conn.WriteToUDP(buffer[:n], addr) // 回传数据到客户端
		if err != nil {
			log.Println("Write to UDP failed:", err)
			break
		}
	}
}
